Node.js Server Reference

Node.js

সার্ভার অবজেক্ট

Node.js Server . Server :

http.Server

HTTP সার্ভার তৈরি করতে

https.Server

HTTPS সার্ভার তৈরি করতে

net.Server

TCP সার্ভার তৈরি করতে

tls.Server

TLS/SSL সার্ভার তৈরি করতে

এই সার্ভার অবজেক্টগুলি তাদের নিজ নিজ প্রোটোকল অনুযায়ী ক্লায়েন্ট সংযোগ, প্রক্রিয়া অনুরোধ এবং রিটার্ন প্রতিক্রিয়া পরিচালনা করে।

সাধারণ সার্ভার পদ্ধতি

পদ্ধতি ব্যাখ্যা
server.listen([port][, host][, backlog][, callback]) সার্ভার সংযোগের জন্য জিজ্ঞাসা শুরু করে. সার্ভার আবদ্ধ হলে কলব্যাক কার্যকর করা হয়
server.close([callback]) সার্ভারকে নতুন সংযোগ গ্রহণ করা বন্ধ করে। সমস্ত সংযোগ বন্ধ হয়ে গেলে কলব্যাক বলা হয়
server.address() সার্ভারের বাইন্ড অ্যাড্রেস, অ্যাড্রেস ফ্যামিলি নাম এবং পোর্ট ফেরত দেয়
server.getConnections(callback) অ্যাসিঙ্ক্রোনাসভাবে সার্ভারে সমবর্তী সংযোগের সংখ্যা পায়

সাধারণ সার্ভার ইভেন্ট

ঘটনা ব্যাখ্যা
'close' সার্ভার বন্ধ হলে রিলিজ হয়
'connection' একটি নতুন লিঙ্ক তৈরি করা হলে ইস্যু করা হয়
'error' কোনো ত্রুটি ঘটলে ইস্যু করা হয়
'listening' server.listen() bind

HTTP সার্ভার

Node.js HTTP http.createServer() :

const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // অনুরোধ হ্যান্ডেল res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('হ্যালো ওয়ার্ল্ড\n'); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); }); // সার্ভার ইভেন্টগুলি পরিচালনা করুন server.on('error', (err) => { console.error(`সার্ভার ত্রুটি: ${err.message}`); }); server.on('close', () => { console.log('সার্ভার বন্ধ'); });

HTTPS সার্ভার

একটি HTTPS সার্ভারের জন্য SSL সার্টিফিকেট প্রয়োজন এবং এটি https.createServer() পদ্ধতি ব্যবহার করে তৈরি করা হয়:

const https = প্রয়োজন('https'); const fs = প্রয়োজন('fs'); // SSL বিকল্প - একটি উত্পাদন পরিবেশে, সঠিকভাবে স্বাক্ষরিত শংসাপত্র ব্যবহার করুন const বিকল্প = { কী: fs.readFileSync('server-key.pem'), // আপনার কী ফাইলের পাথ cert: fs.readFileSync('server-cert.pem') // আপনার সার্টিফিকেট ফাইলের পাথ }; // একটি HTTPS সার্ভার তৈরি করুন const সার্ভার = https.createServer(options, (req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('হ্যালো সিকিউর ওয়ার্ল্ড\n'); }); // সার্ভার শুরু করুন const PORT = 3443; server.listen(PORT, () => { console.log(`সার্ভার https://localhost:${PORT}/` এ চলছে); });

TCP সার্ভার (নেট. সার্ভার)

net.createServer() পদ্ধতি ব্যবহার করে একটি TCP সার্ভার তৈরি করা হয়:

const net = প্রয়োজন ('নেট'); // একটি TCP সার্ভার তৈরি করুন const server = net.createServer((সকেট) => { console.log('ক্লায়েন্ট সংযুক্ত'); // ক্লায়েন্ট থেকে ডেটা পরিচালনা করতে socket.on('ডেটা', (ডেটা) => { console.log(`প্রাপ্ত: ${data}`); socket.write(`Echo: ${data}`); }); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল socket.on('শেষ', () => { console.log('ক্লায়েন্ট সংযোগ বিচ্ছিন্ন'); }); // সকেট ত্রুটিগুলি পরিচালনা করুন socket.on('error', (err) => { console.error(`সকেট ত্রুটি: ${err.message}`); }); }); // সার্ভার শুরু করুন const PORT = 8888; server.listen(PORT, () => { console.log(`TCP সার্ভার পোর্টে শুনছে ${PORT}`); }); // এটি অনুরোধ করার পরে সার্ভারের তথ্য পান server.on('শোনা', () => { const ঠিকানা = server.address(); console.log(`সার্ভার তথ্য: ${JSON.stringify(address)}`); });

TLS/SSL সার্ভার

tls.createServer() পদ্ধতি ব্যবহার করে একটি নিরাপদ TLS/SSL সার্ভার তৈরি করা হয়েছে:

const tls = প্রয়োজন('tls'); const fs = প্রয়োজন('fs'); // SSL বিকল্প const বিকল্প = { কী: fs.readFileSync('server-key.pem'), cert: fs.readFileSync('server-cert.pem'), // ক্লায়েন্ট শংসাপত্রের অনুরোধ করুন (ঐচ্ছিক) অনুরোধ শংসাপত্র: সত্য, // সার্টিফিকেট ছাড়া সংযোগ প্রত্যাখ্যান করুন (ঐচ্ছিক) rejectUnauthorized: মিথ্যা }; // একটি TLS সার্ভার তৈরি করুন const সার্ভার = tls.createServer(বিকল্প, (সকেট) => { console.log('ক্লায়েন্ট সুরক্ষিতভাবে সংযুক্ত'); // ক্লায়েন্ট একটি শংসাপত্র জারি করেছে কিনা তা পরীক্ষা করুন যদি (socket.authorized) { console.log('ক্লায়েন্ট অনুমোদিত'); } অন্য { console.log('ক্লায়েন্ট অননুমোদিত'); } // ক্লায়েন্ট থেকে ডেটা পরিচালনা করতে socket.on('ডেটা', (ডেটা) => { console.log(`প্রাপ্ত: ${data}`); socket.write(`Secure echo: ${data}`); }); // ক্লায়েন্ট সংযোগ বিচ্ছিন্ন হ্যান্ডেল socket.on('শেষ', () => { console.log('ক্লায়েন্ট সংযোগ বিচ্ছিন্ন'); }); }); // সার্ভার শুরু করুন const PORT = 8443; server.listen(PORT, () => { console.log(`TLS সার্ভার পোর্টে শুনছে ${PORT}`); });

রাউটিং সহ HTTP সার্ভার

মৌলিক রাউটিং সহ একটি সম্পূর্ণ HTTP সার্ভার:

const http = প্রয়োজন('http'); const url = প্রয়োজন('url'); // মৌলিক রাউটিং সহ একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // URL পার্স করুন const parsedUrl = url.parse(req.url, true); const path = parsedUrl.pathname; const trimmedPath = path.replace(/^\/+|\/+$/g, ''); // HTTP পদ্ধতি পান const পদ্ধতি = req.method.toLowerCase(); // ক্যোয়ারী প্যারামিটার পান const queryParams = parsedUrl.query; // অনুরোধটি লগ করুন console.log(`অনুরোধ গৃহীত হয়েছে: ${method} ${trimmedPath}`); // রুট হ্যান্ডলার চলুন প্রতিক্রিয়া = { অবস্থা: 404, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: {বার্তা: 'নট ফাউন্ড' } }; // মৌলিক রাউটিং যদি (পদ্ধতি === 'পান') { যদি (trimmedPath === '') { // বাড়ির পথ প্রতিক্রিয়া = { অবস্থা: 200, বিষয়বস্তুর প্রকার: 'টেক্সট/এইচটিএমএল', পেলোড: '

Home Page

Welcome to the server

' }; } else if (trimmedPath === 'api/users') { // API রুট - তালিকা ব্যবহারকারী প্রতিক্রিয়া = { অবস্থা: 200, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: { ব্যবহারকারী: [ {আইডি: 1, নাম: 'জন' }, {আইডি: 2, নাম: 'জেন' } ] } }; } else if (trimmedPath.startsWith('api/users/')) { // API রুট - আইডি দ্বারা ব্যবহারকারী পান const userId = trimmedPath.split('/')[2]; প্রতিক্রিয়া = { অবস্থা: 200, সামগ্রীর ধরন: 'অ্যাপ্লিকেশন/জেসন', পেলোড: { id: userId, নাম: `User ${userId}` } }; } } // প্রতিক্রিয়া ফেরত পাঠান res.setHeader('Content-Type', response.contentType); res.writeHead(response.status); // পেলোড একটি অবজেক্ট হলে স্ট্রিং এ রূপান্তর করুন const payloadString = typeof response.payload === 'অবজেক্ট' ? JSON.stringify(response.payload) : প্রতিক্রিয়া.পেলোড; res.end(payloadString); }); // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`সার্ভার http://localhost:${PORT}/` এ চলছে); });

সার্ভার সময়সীমা এবং সীমাবদ্ধতা

সার্ভারের সময়সীমা এবং সংযোগ সীমা কনফিগার করা হচ্ছে:

const http = প্রয়োজন('http'); // একটি HTTP সার্ভার তৈরি করুন const সার্ভার = http.createServer((req, res) => { // বিলম্বিত প্রতিক্রিয়া অনুকরণ করা setTimeout(() => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('বিলম্বের পরে প্রতিক্রিয়া\n'); }, 2000); }); // সার্ভার টাইমআউট কনফিগার করুন server.timeout = 10000; // 10 সেকেন্ড (ডিফল্ট 120000 বা 2 মিনিট) server.keepAliveTimeout = 5000; // 5 সেকেন্ড (ডিফল্ট 5000) server.maxHeadersCount = 1000; // হেডারের সর্বোচ্চ সংখ্যা (ডিফল্ট 2000) server.maxRequestsPerSocket = 100; // সকেট প্রতি সর্বোচ্চ অনুরোধ (Node.js 14+) // সার্ভার শুরু করুন const PORT = 8080; server.listen(PORT, () => { console.log(`http://localhost:${PORT}/`-এ কনফিগার করা টাইমআউট সহ সার্ভার); // সার্ভার কনফিগারেশন দেখান console.log(`সার্ভার টাইমআউট: ${server.timeout}ms`); console.log(`কিপ-লাইভ টাইমআউট: ${server.keepAliveTimeout}ms`); console.log(`সর্বোচ্চ হেডার সংখ্যা: ${server.maxHeadersCount}`); console.log(`সকেট প্রতি সর্বোচ্চ অনুরোধ: ${server.maxRequestsPerSocket || 'N/A'}`); });

HTTP/2 সার্ভার

একটি HTTP/2 সার্ভার তৈরি করা (Node.js v8.4.0 এ প্রবর্তিত):

const http2 = প্রয়োজন('http2'); const fs = প্রয়োজন('fs'); // HTTP/2 এর জন্য SSL বিকল্প const বিকল্প = { কী: fs.readFileSync('server-key.pem'), শংসাপত্র: fs.readFileSync('server-cert.pem') }; // একটি HTTP/2 সার্ভার তৈরি করুন const সার্ভার = http2.createSecureServer(বিকল্প); // ইনকামিং স্ট্রীম পরিচালনা করুন server.on('স্ট্রিম', (স্ট্রিম, হেডার) => { const path = হেডার [':পথ']; const মেথড = হেডার[':মেথড']; console.log(`${method} ${path}`); // অনুরোধে সাড়া দিন stream.respond({ 'content-type': 'text/html', ':স্থিতি': 200 }); stream.end('

HTTP/2 Server

This page was served via HTTP/2

'); }); // সার্ভার শুরু করুন const PORT = 8443; server.listen(PORT, () => { console.log(`HTTP/2 সার্ভার https://localhost:${PORT}/` এ চলছে); });

সর্বোত্তম অনুশীলন

ত্রুটি হ্যান্ডলিং:সর্বদা 'ত্রুটি' ইভেন্ট শুনে সার্ভার ত্রুটিগুলি পরিচালনা করুন
Graceful shutdown: server.close() shutdown
Timeouts:রিসোর্স প্রক্রিয়াকরণ প্রতিরোধ করার জন্য উপযুক্ত সময়সীমা কনফিগার করুন
Clustering:একাধিক CPU কোর ব্যবহার করতে ক্লাস্টার মডিউল ব্যবহার করুন
HTTPS/TLS:উত্পাদন অ্যাপ্লিকেশনের জন্য নিরাপদ সার্ভার ব্যবহার করুন
সংযোগ সীমা:আপনার সার্ভারের ক্ষমতার উপর ভিত্তি করে উপযুক্ত সীমা নির্ধারণ করুন
পর্যবেক্ষণ:সংযোগ, অনুরোধ এবং প্রতিক্রিয়া সময় জন্য পর্যবেক্ষণ বাস্তবায়ন

অনুশীলন করুন

Node.js HTTP .

http.startServer()
✗ ভুল! "http.startServer()" Node.js-এ একটি বৈধ পদ্ধতি নয়
http.newServer()
✗ ভুল! "http.newServer()" Node.js-এ একটি বৈধ পদ্ধতি নয়
http.createServer()
✓ ঠিক আছে! "http.createServer()" হল সঠিক পদ্ধতি যা Node.js-এ একটি HTTP সার্ভার তৈরি করতে ব্যবহৃত হয়
http.initServer()
✗ ভুল! "http.initServer()" Node.js-এ একটি বৈধ পদ্ধতি নয়